/*
 * @(#)IRegistryQueryService.java
 * Date 2013-08-13
 * Version 1.0
 * Author Jim Horner
 * Copyright (c)2012
 */


package us.hornerscorners.lamppost.registry.service;

import java.util.Collection;

import us.hornerscorners.lamppost.exception.ServiceActionException;

import us.hornerscorners.lamppost.model.common.InstanceIdentifier;

import us.hornerscorners.lamppost.model.document.DocumentEntry;
import us.hornerscorners.lamppost.model.document.Folder;
import us.hornerscorners.lamppost.model.document.SubmissionSet;


/**
 *
 * @author jim
 */
public interface IRegistryQueryService extends IStoredQueryService {

    /**
     * Method description
     *
     *
     * @param entryURNs
     *
     * @return
     *
     * @throws ServiceActionException
     */
    public abstract DocumentEntry[] retrieveDocumentEntries(Collection<String> entryURNs)
            throws ServiceActionException;

    /**
     * Method description
     *
     *
     * @param uniqueId
     *
     * @return
     *
     * @throws ServiceActionException
     */
    public abstract DocumentEntry retrieveDocumentEntry(InstanceIdentifier uniqueId)
            throws ServiceActionException;

    /**
     * Method description
     *
     *
     *
     * @param entryURN
     * @return
     * @throws us.hornerscorners.lamppost.exception.ServiceActionException
     */
    public abstract DocumentEntry retrieveDocumentEntry(String entryURN)
            throws ServiceActionException;

    /**
     * Method description
     *
     *
     *
     * @param entryURN
     * @return
     * @throws us.hornerscorners.lamppost.exception.ServiceActionException
     */
    public abstract Folder retrieveFolder(String entryURN) throws ServiceActionException;

    /**
     * Method description
     *
     *
     * @param entryURNs
     *
     * @return
     *
     * @throws ServiceActionException
     */
    public abstract Folder[] retrieveFolders(Collection<String> entryURNs)
            throws ServiceActionException;

    /**
     * Method description
     *
     *
     * @param entryURN
     *
     * @return
     *
     * @throws ServiceActionException
     */
    public abstract DocumentEntry[] retrieveRelatedDocuments(String entryURN)
            throws ServiceActionException;

    /**
     * Method description
     *
     *
     * @param id
     *
     * @return
     * @throws us.hornerscorners.lamppost.exception.ServiceActionException
     */
    public abstract SubmissionSet retrieveSubmissionSet(String id)
            throws ServiceActionException;

    /**
     * Method description
     *
     *
     * @param id
     *
     * @return
     *
     * @throws ServiceActionException
     */
    public abstract SubmissionSet[] retrieveSubmissionSets(Collection<String> id)
            throws ServiceActionException;
}
